﻿using System;
using System.Drawing;

namespace SimpleTerminal.TerminalControl
{
    public class TerminalFont : System.IDisposable
    {
        //
        // 摘要:
        //     普通文本。
        // Regular = 0,
        //
        // 摘要:
        //     显示为粗体文本。
        // Bold = 1,
        //
        // 摘要:
        //     斜体文本。
        //  Italic = 2,
        //
        // 摘要:
        //     带下划线的文本。
        // Underline = 4,
        //
        // 摘要:
        //     有一条线穿过中部的文本。
        // Strikeout = 8
        public Font Regular;
        public Font Bold;
        public Font Italic;
        public Font Underline;
        public Font Strikeout;
        public TerminalFont(Font font)
        {
            Font(font);
        } 
        
        ~TerminalFont()
        {
            Dispose(false);
        }
        bool disposed = false;
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
                return;

            if (disposing)
            {
                Regular.Dispose();
                Bold.Dispose();
                Italic.Dispose();
                Underline.Dispose();
                Strikeout.Dispose();
            }
            disposed = true;
        }

        public void Font(Font font)
        {
            Regular = new Font(font.FontFamily, font.Size, FontStyle.Regular, GraphicsUnit.Point);
            Bold = new Font(font.FontFamily, font.Size, FontStyle.Bold, GraphicsUnit.Point);
            Italic = new Font(font.FontFamily, font.Size, FontStyle.Italic, GraphicsUnit.Point);
            Underline = new Font(font.FontFamily, font.Size, FontStyle.Underline, GraphicsUnit.Point);
            Strikeout = new Font(font.FontFamily, font.Size, FontStyle.Strikeout, GraphicsUnit.Point);
        }

        public void Dispose()
        {
            Dispose(true);
            //通知垃圾回收器不再调用终结器
            GC.SuppressFinalize(this);
        }
    }
}
